package com.santoker.user.service.service.common;

import com.santoker.baseservice.redis.AuthInfo;
import com.santoker.user.service.model.AdminUser;
import com.santoker.user.service.model.User;
import com.santoker.user.service.service.tp.wechat.response.WeChatAppUserInfoResponse;

/**
 * redis 操作接口
 *
 * @author jiangs
 */
public interface RedisService {

    /**
     * 获取有效期
     *
     * @param account 账号
     * @return
     */
    long getAuthCodeExpire(String account);

    /**
     * 设置验证码
     *
     * @param account 账号
     * @param code    验证码
     * @param timeout 超时时间
     */
    void setAuthCode(String account, String code, long timeout);

    /**
     * 验证验证码
     *
     * @param account 账号
     * @param code    验证码
     * @return
     */
    boolean verifyCode(String account, String code);

    /**
     * 存储用户信息
     *
     * @param user  用户信息
     * @param token 登录Token
     * @param cid   设备标识ID
     * @param sid   设备ID
     */
    void saveToken(User user, String token, String cid, String sid);

    /**
     * 移除用户登录信息
     *
     * @param authInfo 用户登录信息
     */
    void removeToken(AuthInfo authInfo);

    /**
     * 存储后台用户信息
     *
     * @param user  用户信息
     * @param token 登录Token
     * @param cid   设备标识ID
     * @param sid   设备ID
     */
    void saveAdminToken(AdminUser user, String token, String cid, String sid);

    /**
     * 存储微信用户信息
     *
     * @param userInfo 微信用户信息
     */
    void saveWxUserInfo(WeChatAppUserInfoResponse userInfo);

    /**
     * 获取微信用户信息
     *
     * @param openid 微信openid
     * @return
     */
    WeChatAppUserInfoResponse getWxUserInfo(String openid);

}
